#!/bin/sh

die () { echo "$@" ; exit 1; }

: nvm.sh
\. ../../../nvm.sh

INPUT='v27.0.0
v27.0.0-alpha.1.10.2
v26.12.10
v27.0.0-alpha.1.2.0
v26.12.2
v27.0.0-alpha.0.0.0
v26.12.2
v4.0.0'
EXPECTED='v4.0.0
v26.12.2
v26.12.10
v27.0.0-alpha.0.0.0
v27.0.0-alpha.1.2.0
v27.0.0-alpha.1.10.2
v27.0.0'
OUTPUT="$(echo "${INPUT}" | nvm_sort_versions)"
[ "_${OUTPUT}" = "_${EXPECTED}" ] || die "nvm_sort_versions printed >${OUTPUT}<, expected >${EXPECTED}<"
OUTPUT="$(echo "${INPUT}" | nvm_sort_versions 1)"
[ "_${OUTPUT}" = "_${EXPECTED}" ] || die "nvm_sort_versions 1 printed >${OUTPUT}<, expected >${EXPECTED}<"

INPUT='v3.3.1.iojs
v10.0.0.node
v27.0.0-alpha.1.0.0.node
v1.0.0.iojs
v2.0.0.node'
EXPECTED='v1.0.0.iojs
v2.0.0.node
v3.3.1.iojs
v10.0.0.node
v27.0.0-alpha.1.0.0.node'
OUTPUT="$(echo "${INPUT}" | nvm_sort_versions)"
[ "_${OUTPUT}" = "_${EXPECTED}" ] || die "nvm_sort_versions with suffixes printed >${OUTPUT}<, expected >${EXPECTED}<"

INPUT='v11.1.0-nightly20181101af6d26281f
v11.0.0-nightly201810011be804d625
v11.0.0-nightly20181002aaaaaaaaaa'
OUTPUT="$(echo "${INPUT}" | nvm_sort_versions 1)"
[ "_$(echo "${OUTPUT}" | grep -c 'v11\.0\.0-nightly')" = '_1' ] || die "nvm_sort_versions 1 should collapse same-release nightlies; got >${OUTPUT}<"
[ "_$(echo "${OUTPUT}" | sed -n '2p')" = '_v11.1.0-nightly20181101af6d26281f' ] || die "nvm_sort_versions 1 should keep other nightlies; got >${OUTPUT}<"
[ "_$(echo "${OUTPUT}" | wc -l | tr -d ' ')" = '_2' ] || die "nvm_sort_versions 1 printed the wrong number of lines; got >${OUTPUT}<"
OUTPUT="$(echo "${INPUT}" | nvm_sort_versions)"
[ "_$(echo "${OUTPUT}" | wc -l | tr -d ' ')" = '_3' ] || die "nvm_sort_versions should keep every distinct line; got >${OUTPUT}<"

INPUT='v24.11.0   Krypton *
v22.11.0   Jod'
EXPECTED='v22.11.0   Jod
v24.11.0   Krypton *'
OUTPUT="$(echo "${INPUT}" | nvm_sort_versions 1)"
[ "_${OUTPUT}" = "_${EXPECTED}" ] || die "nvm_sort_versions 1 should keep trailing fields; got >${OUTPUT}<"
